package com.masnegocio.pac.ws;

import javax.jws.WebService;


import org.apache.log4j.Logger;

import com.masnegocio.pac.Pac;
import com.masnegocio.pac.PacValidationRequest;
import com.masnegocio.pac.PacValidationResponse;
import com.masnegocio.pac.comun.PacException;
import com.masnegocio.pac.dto.PacDto;
import com.masnegocio.pac.dto.PacEstatusDto;
import com.masnegocio.pac.servicio.PacServicio;

@WebService(
		endpointInterface = "com.masnegocio.pac.Pac",
		name = "Pac",
		portName = "Pac",
		serviceName = "Pac",
		targetNamespace = "http://www.masnegocio.com/Pac/",
		wsdlLocation = "WEB-INF/wsdl/Pac.wsdl"
	)
public class PacImpl implements Pac {
	private static final Logger logger = Logger.getLogger(PacImpl.class);
	@Override
	public PacValidationResponse pacValidation(PacValidationRequest parameters) {
		if(logger.isDebugEnabled()){
			logger.debug("INICIA LA VALIDACION SOLICITADA POR: "+parameters.getClientId());
		}
		PacValidationResponse pacValidationResponse = new PacValidationResponse();
		PacServicio  pacServicio= new PacServicio();
		PacDto  pacDto = new PacDto();
		pacDto.setCfdiBtyteArray(parameters.getCfdi());
		pacDto.setClientId(parameters.getClientId());
		try {
			PacEstatusDto estatusDto = pacServicio.validacion(pacDto);
			if(logger.isDebugEnabled()){
				logger.debug("TERMINO LA VALIDACION SOLICITADA POR: "+parameters.getClientId());
				logger.debug("SU ESTATUS DE RESPUESTA ES: EXITO, SU CODIGO ES: "+estatusDto.getCodigo()+" Y SU DESCRIPCION: "+estatusDto.getDescripcion());
			}
			pacValidationResponse.setCodigo(estatusDto.getCodigo());
			pacValidationResponse.setDescripcion(estatusDto.getDescripcion());
			pacValidationResponse.setEstatus(estatusDto.getEstatus());
			return pacValidationResponse;
		} catch (PacException pE) {
			logger.error("OCURRIO UNA EXCEPTION EN LA VALIDACION SOLICITADA POR "+parameters.getClientId()+" LA EXCEPTION ES: "+pE);
			logger.error("SU ESTATUS DE RESPUESTA ES: FALLO, SU CODIGO ES: "+pE.getCodigoError()+" Y SU DESCRIPCION: "+pE.getDescripcionError());
			pacValidationResponse.setCodigo(pE.getCodigoError());
			pacValidationResponse.setDescripcion(pE.getDescripcionError());
			pacValidationResponse.setEstatus(pE.getCodigoEstatus());
			return pacValidationResponse;
		}
	}

}
